home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / C / GCC / V2-4-5 / GCC1 / !GCC / !Changes < prev    next >
Text File  |  1994-10-06  |  6KB  |  130 lines

  1.                 Changes
  2.                 =======
  3.  
  4. This describes the changes between the releases of GCC for the Archimedes.
  5.  
  6.  
  7.  
  8. 2.4.5 (1.beta.1) -> 2.4.5 (R2)
  9. ==============================
  10.  
  11. This is mostly bug fixes with a few enhancements.
  12.  
  13. 1)      Confusion between binaries being in subdirs gcc and bin sorted out -
  14.         they are definitely in bin (i think).
  15.  
  16. 2)      GCC now handles leaf functions differently, and drops the APCS-R
  17.         prologue and epilogues, if it can. This means that GCC now runs at
  18.         around 16,500 Dhrystones compared to the previous 14,300, and
  19.         Norcroft's 18,500.
  20.  
  21. 3)      A problem with using variables the same as the APCS-R register names
  22.         (r0, fp etc.) has been cleared.
  23.  
  24. 4)      The switch -acorn-make is now deprecated, and has been replaced by
  25.         -mamu, which has the same effect of generating the dependencies file
  26.         for AMU. This was done as all machine specific switch should start
  27.         -m. -acorn-make is accepted by this release, but will not be
  28.         accepted by later versions.
  29.  
  30. 5)      For those who wish to use Stubs rather than UnixLib, a new switch
  31.         -mstubs has been added which does all that is required to use Stubs.
  32.  
  33. 6)      Attempts to use the -pipe command are rejected as errors.
  34.  
  35. 7)      the -mno-apcs switch has had its behaviour tidied up. [internal
  36.         effect only]
  37.  
  38. 8)      Profiling attempts to generate something reasonable.
  39.  
  40.  
  41.  
  42.  
  43. 2.4.5 (r2) -> 2.4.5 (R2.1)
  44. ==========================
  45.  
  46. Mainly fixes for a couple of minor bugs - If they dont bite, you dont need
  47. this upgrade.
  48.  
  49. 1)      Problems with passing float parameters to some functions - the
  50.         generated code references an undefined register. This was reported
  51.         when using the iostream library and the << operator.
  52.  
  53. 2)      When using C++, the new_handler() functions required UnixLib to be
  54.         used rather than stubs as the used write() to report errors. I now
  55.         use OS_Write0 to disply the error message - this does mean that
  56.         redirection of stderr will not catch this error message.
  57.  
  58. 3)      GCC has an inbuilt alloca(), which is incompatabile with the APCS-R
  59.         multi-chunk stack. To use alloca correctly, you MUST include the
  60.         file <alloca.h> before calling alloca(). This is due to GCC simply
  61.         dropping the stack pointer without checking for any erorrs. UnixLib
  62.         uses malloc() and patches the return address in the stack to free
  63.         the memory on function return.
  64.  
  65. 4)      I have finally sorted out the problem of register names - AS now
  66.         contains these as internal constants, which do not clash with
  67.         variables of the same name.
  68.  
  69.         The register names that GCC / AS recognises are :
  70.  
  71.         r0 r1 r2 r3 r4 r5 r6 r7 r8  General purpose registers
  72.         rfp sl fp ip sp lr pc       Used by GCC - take care when using these
  73.         f0 f1 f2 f3 f4 f5 f6 f7     Floating point registers.
  74.  
  75.         Note - AS only recognises these when being used as a backend to GCC,
  76.         if using AS in standalone mode, you still have to define the
  77.         registers you use.
  78.  
  79. 5)      Internal labels are now preceded by a '.', which is illegal in C
  80.         variables, so there should be no clashes.
  81.  
  82. 6)      Changes to UnixLib have meant that 'riscos' does not have to be
  83.         undefined when compiling with UnixLib.
  84.  
  85.  
  86.  
  87. 2.4.5 (R2.1) -> 2.4.5 (R2.2)
  88. ============================
  89.  
  90. Yet again, this is only a few bug fixes. My current intention is that this
  91. will be the last relase of GCC 2.4.5, and the next release will be based on
  92. GCC 2.6.x (probably 2.6.1), unless anyone reports any show stoper bugs.
  93.  
  94. 1)      The backend assembler has been improved to generate the correct
  95.         instructions for loading / storing floating point values, with
  96.         post-increment write back to the base register. This only caused
  97.         errors on the FPA, and not on the FPE. This correction is also in
  98.         !AS V1.26 and later.
  99.  
  100. 2)      the use of long long variables should work - most of the long long
  101.         library code was missing.
  102.  
  103. 3)      Confusion between different, incompatible versions of !AS being in
  104.         the run path has been corrected, GCC now uses gcc_as. This is
  105.         currently a standard V1.26b !AS, linked against the Shared C
  106.         library, though this may drift in the future. This has meant the the
  107.         binary is reduced in size.
  108.  
  109. 4)      The problem with GCC not correctly reading the return code from the
  110.         sub programs it invokes has been cured, and errors from one run do
  111.         not affect the next.
  112.  
  113. 5)      Calls to alloca() are correctly handled by GCC now, and it is not
  114.         required to include the file <alloca.h>, though it is recomended.
  115.  
  116. 6)      Includes of the form #include "Path:file.h" now work correctly, and
  117.         there is no need for the #include "Path:/file.h" form.
  118.  
  119. 7)      Problems with an 'extern int' statement being followed immediately
  120.         by a 'const int' statement casuing !AS to complain about  attempting
  121.         to put data into a non-init area has been cleared - I forgot to
  122.         change back to the code area after outputing a 'common' area.
  123.  
  124. 8)      At the request of the ARchBSD mob, GCC should now handle filenames
  125.         with upto 55 characters in each path element.
  126.  
  127. 9)      gcc now complain if it thinks it does not have enough memory to run.
  128.         The minimum wimpslot that will allow GCC to run is now 3044K. If the
  129.         slot is smaller, GCC stops with a fatal error.
  130.